package com.haibo.component;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import java.util.Arrays;

/**
 * @Author : 刘海波
 * @Date: 2025-08-23 23:04
 * @Description:
 *      1、首先通过@Compoent注解将MyCommandLineRunner注册为Spring容器中的一个bean;
 *      2、添加@Order注解，表示这个启动任务的执行优先级，因为在一个项目中，启动任务可能有多个，所以需要有一个排序。@Order注解中，数字越小，优先级越大，默认情况下，优先级的值为 Integer.MAX_VALUE，表示优先级最低;
 *      3、在run方法中，写启动任务的核心逻辑，当项目启动时，run方法会被自动执行;
 *      4、run方法的参数，来自于项目的启动参数，即项目入口类中，main方法的参数会被传到这里
 */
@Slf4j
@Order(100)
@Component
public class MyCommandLineRunner implements CommandLineRunner {

    public MyCommandLineRunner() {
        log.info("MyCommandLineRunner 无参构造执行了...");
    }

    @Override
    public void run(String... args) throws Exception {
        log.info("server start,MyCommandLineRunner do something init work here!params:{}", Arrays.asList(args));
    }
}
